# Experiments

`experiments` 配置用于启用插件中的实验功能。

- Example

```ts
new ModuleFederationPlugin({
  name: '@demo/host',
  experiments: {
    asyncStartup: true,
    externalRuntime: false,
    provideExternalRuntime: false
  },
  shared: {
    react: {
      singleton: true,
    },
    'react-dom': {
      singleton: true,
    },
  },
  //...
});
```

## asyncStartup

- Type: `boolean`
- Required: No
- Default: `false`

启用 `asyncStartup` 后，所有 {props.name || 'Module Federation'}  入口将默认以异步方式初始化。这意味着：

- 无需在应用顶部手动添加 `import()` 语句（例如 `import('./bootstrap')`）
- 所有入口都会自动处理异步初始化
- 通过自动的异步处理机制防止 "eager consumption" 错误

:::warning
使用此模式时，所有入口都将异步初始化。如果你手动 require 一个打包后的入口或导出 UMD 库，它将返回一个 promise 来解析导出内容。
:::

## externalRuntime

- Type: `boolean`
- Required: No
- Default: `false`

设置 `true` 后 会 external MF runtime，并使用消费者提供的 runtime 。（请确保你的消费者有设置 `provideExternalRuntime: true`，否则无法正常运行！）

## provideExternalRuntime

- Type: `boolean`
- Required: No
- Default: `false`

::: warning 注意
请确保仅在最顶层消费者配置！若同时有多个消费者注入 runtime，后执行的不会覆盖已有的 runtime。
:::

设置 `true` 后会在消费者处注入 MF runtime。
